vulkan: Don't crash if vkEnumeratePhysicalDevices fails
authorAlexander Larsson <alexl@redhat.com>
Thu, 30 Nov 2017 13:48:15 +0000 (14:48 +0100)
committerAlexander Larsson <alexl@redhat.com>
Thu, 30 Nov 2017 20:57:42 +0000 (21:57 +0100)
gdk/gdkvulkancontext.c

index f44253479e84a3380dc79cceaecc483156562804..3fd697a8af30f1a47e8fb570d305396614098793 100644 (file)
@@ -599,10 +599,9 @@ gdk_display_create_vulkan_device (GdkDisplay  *display,
 {
   uint32_t i, j;
 
-  uint32_t n_devices;
+  uint32_t n_devices = 0;
   GDK_VK_CHECK(vkEnumeratePhysicalDevices, display->vk_instance, &n_devices, NULL);
-  VkPhysicalDevice *devices = g_newa (VkPhysicalDevice, n_devices);
-  GDK_VK_CHECK(vkEnumeratePhysicalDevices, display->vk_instance, &n_devices, devices);
+  VkPhysicalDevice *devices;
 
   if (n_devices == 0)
     {
@@ -612,6 +611,9 @@ gdk_display_create_vulkan_device (GdkDisplay  *display,
       return FALSE;
     }
 
+  devices = g_newa (VkPhysicalDevice, n_devices);
+  GDK_VK_CHECK(vkEnumeratePhysicalDevices, display->vk_instance, &n_devices, devices);
+
   for (i = 0; i < n_devices; i++)
     {
       VkPhysicalDeviceProperties props;